<template>
    <div>
        <div class="szbox" @click="show = true">
            <input type="text" placeholder="请选择发布位置" v-model="fieldValue" readonly/>
            <van-icon name="arrow" />
        </div>
        <van-popup v-model:show="show" round position="bottom">
            <van-cascader
                v-model="cascaderValue"
                title="发布位置"
                :field-names="fieldNames"
                :options="options"
                @close="show = false"
                @finish="onFinish"
            />
            </van-popup>
    </div>
</template>

<script>
import {mapGetters} from "vuex"
import { Popup as vanPopup,Cascader as vanCascader,Icon as vanIcon,Toast} from 'vant';
import Mixin from "@/components/mixin";
import {getCompanyList,getUserInfo,getOrderList,getCustomList} from '@/api/index.js'

export default {
    mixins:[Mixin],
    props:{
        modelValue:String,
    },
    components:{
        vanPopup,
        vanCascader,
        vanIcon
    },
    computed:{
        ...mapGetters({
           // userInfo:'user/userInfo'
        })
    },
    data(){
        return {
            show: false,
            fieldValue: '',
            cascaderValue: '',
            // 选项列表，children 代表子选项，支持多级嵌套
            fieldNames:{
                text: 'name',
                value: '_id',
                children: 'children',
            },
            querys:{}, // url参数集合
            options: [
                // {
                //     text: '浙江省',
                //     value: '330000',
                //     children: [{ text: '杭州市', value: '330100' }],
                // },
                // {
                //     text: '江苏省',
                //     value: '320000',
                //     children: [{ text: '南京市', value: '320100' }],
                // },
                // {
                //     text: '广西省',
                //     value: '310000'
                // },
            ],
            publicSquareDetail:'',
            userInfo:''
        }
    },
    async created(){
        
        this.querys.uid = this.$route.query.uid  // 用户id
        this.querys.appUserType = this.$route.query.appUserType  // 用户类型
        this.querys.publicSquareId = this.$route.query.psqid  // 公共广场id
        this.querys.curCompanyId = this.$route.query.curCompanyId  // 当前成员所属的公司id（成员公司id）
        this.querys.curServiceId = this.$route.query.curServiceId  // 当前成员公司的服务住id
        this.querys.qid = this.$route.query.qid  // 用户id
        
        // 获取用户信息
        const res2 = await getUserInfo(this.querys.uid)
        if(res2.code == 200){
            this.userInfo = res2.data
        }
        //console.log("yyy-this.userInfo:",this.userInfo)

        // 获取公共广场详情，id固定不变
        const res = await getCompanyList({_id:this.querys.publicSquareId}) 
        if(res.data.data && res.data.data.length>0){
            this.publicSquareDetail = res.data.data[0]
        }
  
        if(this.querys.appUserType == 1){ // 普通游客：只能发布到公共广场
            this.options.push(this.publicSquareDetail)
            if(!this.querys.qid){// 设置默认 
                this.cascaderValue = this.publicSquareDetail._id  
                this.fieldValue = this.publicSquareDetail.name
                this.$emit('update:modelValue',this.cascaderValue)
            }
        }else if(this.querys.appUserType == 2){  // 企业成员：当前公司、公共广场、专属广场
            // 1.成员所在的当前公司
            let curCompany = {} // 当前公司详情
            const res = await getCompanyList({_id:this.querys.curCompanyId}) 
            if(res.data.data && res.data.data.length>0){
                curCompany = res.data.data[0]
                this.options.push(curCompany)
            }

            // 2.公共广场
            this.options.push(this.publicSquareDetail)

            // 3.当前成员公司服务主及服务主专属广场
            const res3 = await getCompanyList({_id:this.querys.curServiceId})
            let serviceDetail = {}
            if(res3.data.data && res3.data.data.length>0){
                serviceDetail = res3.data.data[0]
                //serviceDetail.name = serviceDetail.name+'专属广场'
                serviceDetail.name = '专属空间'
            }

            // 成员公司的服务主专属广场
            const res4 = await getCompanyList({
                type:4, // 获取所有广场
                belong_companyId:this.querys.curServiceId
            })
            if(res4.data.data && res4.data.data.length>0){
                serviceDetail.children = res4.data.data
                this.options.push(serviceDetail)
            }
            
            //this.options.push(serviceDetail)

            if(!this.querys.qid){// 设置默认 
                this.cascaderValue = curCompany._id  // 设置默认：当前公司
                this.fieldValue = curCompany.name
                this.$emit('update:modelValue',this.cascaderValue)
            }
            
        }else if(this.querys.appUserType == 4){ // 专属游客:公共广场、当前专属广场
            // 1.当前所在的专属广场（即公司）：先判断是否有收费广场，存在收费广场，则判断是否购买或者是否失效
            if(!this.userInfo.companyId) return
            const res = await getOrderList({
                userId:this.userInfo._id,
                productId:this.userInfo.companyId,
                orderType:70,//70 加入付费企业支付订单
                status:1,
                endTime:{ $gt:new Date()}  // 订单有效期截至时间大于当前时间
            })
            if(res.code == 200){
                const orderLists = res.data.data
                //console.log("orderLists:",orderLists)
                this.userInfo.companyId.forEach(item =>{
                    if(item.joinType==2){ // 说明是收费公司/广场
                        // 判断是否购买，或者购买的是否过了有效期
                        if(orderLists.find(it => it.productId._id == item._id)){
                            // 已经购买，且未失效
                            this.options.push(item)
                        }
                    }else{
                        this.options.push(item)
                    }
                })
            }
            

            // let curCompany = {} // 当前公司详情
            // const res = await getCompanyList({_id:this.querys.curCompanyId}) 
            // if(res.data.data && res.data.data.length>0){
            //     curCompany = res.data.data[0]
            //     this.options.push(curCompany)
            // }

            // 2.公共广场
			this.options.push(this.publicSquareDetail)

            if(!this.querys.qid){// 设置默认 
                this.cascaderValue = this.options[0]._id  // 设置默认：当前公司
                this.fieldValue = this.options[0].name
                this.$emit('update:modelValue',this.cascaderValue)
            }
            
        }else if(this.querys.appUserType == 3){ // 专家：公共广场、专属广场、公司客户
            // 1.公共广场
            this.options.push(this.publicSquareDetail)

            // 2.当前专家所在公司专属广场
            const res3 = await getCompanyList({_id:this.querys.curCompanyId})
            let serviceDetail = {}
            if(res3.data.data && res3.data.data.length>0){
                serviceDetail = res3.data.data[0]
                //serviceDetail.name = serviceDetail.name+'专属广场'
                serviceDetail.name = '专属空间'
            }
            // 成员公司的服务主专属广场
            const res4 = await getCompanyList({
                type:4, // 获取所有广场
                belong_companyId:this.querys.curCompanyId
            })
            if(res4.data.data && res4.data.data.length>0){
                serviceDetail.children = res4.data.data
                this.options.push(serviceDetail)
            } 
            //this.options.push(serviceDetail)
            

            // 3.当前专家所属公司的客户
            let customDetail = {_id:'custom123456789',name:'签约客户',children:[]}
            const rt2 = await getCustomList({
                pageIndex:1,
                pageSize:10000,
                serviceId:this.querys.curCompanyId,
                customType:2,
                serviceType:2,
                companyType:{type:{'$ne':4}}
            })
            if(rt2 && rt2.data.data && rt2.data.data.length>0){
                const lists = rt2.data.data
                lists.forEach(item =>{
                    // 筛选出当前专家服务的企业
                    if(item.customId && item.experter.find(it => it._id == this.querys.uid)){
                        customDetail.children.push(item.customId)
                    }
                })
                customDetail.children.length>0 && this.options.push(customDetail)
            }
        }
    },
    async mounted(){
    
    },
    methods:{
        // 全部选项选择完毕后，会触发 finish 事件
        onFinish({ selectedOptions }) {
            this.show = false;
            this.fieldValue = selectedOptions.map((option) => option.name).join('/');
            // console.log("selectedOptions:",selectedOptions)
            // console.log("fieldValue:",this.fieldValue)
            // console.log("cascaderValue:",this.cascaderValue)
            this.$emit('update:modelValue',this.cascaderValue)
        } 
    }
}
</script>

<style lang="scss" scoped>
  .szbox{
    display: flex;
    align-items: center;
    width: 100%;
    height: 80px;
    line-height: 80px;
    padding: 20px;
    border: 0;
    background: #fff;
    border-radius: 10px;
    input{
        flex: 1;
        border: 0;
        width: 100%;
        height: 100%;
    }
  }
</style>
